from django.db import models

# Create your models here.
class Student(models.Model):
    #大写的代表是常量，意思是这里是不可变的
    SEX_CHOICES = (
        (0,'女'),
        (1,'男')
    )
    #字符型一定要设置最大长度，verbose是提示
    name = models.CharField(max_length=30,verbose_name='姓名')
    #null是针对数据库的该字段可以为空，blank是针对表单的提交可以为空
    age = models.IntegerField(verbose_name='年龄',null=True,blank=True)
    sex = models.IntegerField(verbose_name='性别',null=True,blank=True,choices=SEX_CHOICES)
    create_time = models.DateTimeField(verbose_name='创建时间',auto_now_add=True)
    update_time = models.DateTimeField(verbose_name='更新时间',auto_now=True)
    is_delete = models.BooleanField(default=False,verbose_name='逻辑删除')

    # 建立外键 不允许删除
    classes = models.ForeignKey('Classes', on_delete=models.CASCADE)

#定义元信息类
    class Meta:
        #如果想更改表名可以这样做
        db_table = 'student'  # 如 s_student，默认表名是应用名_模型类名小写
        #还能添加下面这些属性

        #admin后台管理站点中，表名的显示
        # verbose_name = '图书'

        #后台站点中，表名复数形式的显示。（默认verbose_name后面加“s”表示复数显示
        # verbose_name_plural = verbose_name

        #说明是一个抽象类    用于子模型类的继承。
        # abstract = True

    def delete(self, using=None, keep_parents=False):
        self.is_delete = True
        self.save()

class Classes(models.Model):
    name = models.CharField(max_length=30,verbose_name='班级名',help_text='班级名')
    slogan = models.TextField(verbose_name='口号',null=True,blank=True)
    create_time= models.DateTimeField(verbose_name='创建时间',auto_now_add=True)
    update_time = models.DateTimeField(verbose_name='更新时间', auto_now=True)
    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        db_table = 'classes'

    def delete(self, using=None, keep_parents=False):
        self.is_delete = True
        self.save()

    def __str__(self):
        return self.name

